﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Interface;

namespace Model
{
    public class Konkurrence : IKonkurrence
    {
        #region Fields

        private int _konkurrenceID;
        private string _navn; 

        List<Team> _teams;
        List<Kategori> _kategorier;

        #endregion

        #region Properties

        public int KonkurrenceID
        {
            get { return _konkurrenceID; }
            set { _konkurrenceID = value; }
        }

        public string Navn
        {
            get { return _navn; }
            set { _navn = value; }
        }

        public List<Kategori> Kategorier
        {
            get { return _kategorier; }
            set { _kategorier = value; }  
        }
        
        #endregion

        #region Creation

        public Konkurrence(int konkurrenceID, string navn)
        {
            _konkurrenceID = konkurrenceID;
            _navn = navn;

            _teams = new List<Team>();
            _kategorier = new List<Kategori>();
        }

        public Konkurrence(string navn)
        {
            _navn = navn;

            _teams = new List<Team>();
            _kategorier = new List<Kategori>();
        }


        #endregion

        #region Public Interface

        public void TilføjTeam(int standNummer, string teamNavn, string ansvarligElev, string email, string skole, string underviserNavn, string underviserMail)
        {
            Team team = new Team(standNummer, teamNavn, ansvarligElev, email, skole, underviserNavn, underviserMail);
            _teams.Add(team);
        }

        public void FjernTeam(Team team)
        {
            _teams.Remove(team);
        }

        public void TilføjKategori(string navn, int maxPoint)
        {
            if (!NavnExists(navn))
            {
                Kategori kategori = new Kategori(navn, maxPoint);
                _kategorier.Add(kategori);
            }
        }

        public bool NavnExists(string navn)
        {
            foreach (Kategori e in _kategorier)
            {
                if (e.Navn == navn)
                {
                    return true;
                }
            }
            return false;
        }

        public void FjernKategori(Kategori kategori)
        {
            try
            {
                _kategorier.Remove(kategori);
            }
            catch (Exception ex)
            { 
                throw new Exception(ex.Message);
            }
        }

        #endregion
    }
}
